package com.jianzh5.util;



import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

/**
 * Cache工具类
 * @author jianzh5
 *
 */
public class CacheUtils {
	private static CacheManager cacheManager = SpringContextHolder.getBean("cacheManager");
	private static final String SYS_CACHE= "sysCache";
	
	public static CacheManager getCacheManager(){
		return cacheManager;
	}
	
	/**
	 * 获取一个Cache 没有则创建一个
	 */
	
	private static Cache getCache(String cacheName){
		Cache cache = cacheManager.getCache(cacheName);
		if(cache == null){
			cacheManager.addCache(cacheName);
			cache = cacheManager.getCache(cacheName);
			cache.getCacheConfiguration().setEternal(true);
		}
		return cache;
	}
	
	public static Object get(String key){
		return get(SYS_CACHE,key);
	}	
	
	public static Object get(String cacheName,String key){
		Element element = getCache(cacheName).get(key);
		return element == null ? null : element.getObjectValue();
	}
	
	public static void put(String key , Object value){
		put(SYS_CACHE,key,value);
	}
	public static void put(String cacheName,String key,Object value){
		Element element = new Element(key,value);
		getCache(cacheName).put(element);
	}

	public static void remove(String key){
		remove(SYS_CACHE,key);
	}
	public static void remove(String cacheName,String key){
		getCache(cacheName).remove(key);
	}
}
